package com._54programer.ioc.config.config.register;

import com._54programer.ioc.config.beans.register.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;

/**
 * @Scope : 设置作用域
 * @Lazy  : 懒加载
 */
@Configuration
public class BeanConfig3 {

    /**
     * prototype：多实例的：ioc容器启动并不会去调用方法创建对象放在容器中。每次获取的时候才会调用方法创建对象；
     * singleton：单实例的（默认值）：ioc容器启动会调用方法创建对象放到ioc容器中。以后每次获取就是直接从容器（map.get()）中拿，
     * request：同一次请求创建一个实例
     * session：同一个session创建一个实例
     */
    //@Scope("singleton")
    //@Scope("prototype")
    @Lazy //单实例bean：默认在容器启动的时候创建对象, 加载：容器启动不创建对象。第一次使用(获取)Bean创建对象，并初始化；
    @Bean
    public Person person(){
        System.out.println("添加person到容器中");
        return new Person("张三", 11);
    }

}
